// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DelegateMaker.h"
#include "DelegateInvoker.generated.h"

UCLASS()
class DELEGATE_API ADelegateInvoker : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ADelegateInvoker();

	UDelegateMaker* Maker;

	UFUNCTION(BlueprintCallable)
	void InvokeDelegate(EDelegateType Type);

	UFUNCTION(BlueprintCallable)
	void InvokeDynamicDelegate();

	UFUNCTION(BlueprintCallable)
	void InvokeMultiDelegate();

	UFUNCTION(BlueprintCallable)
	void InvokeMultiDynamicDelegate();

	UFUNCTION(BlueprintCallable)
	void InvokeEvent();

	UPROPERTY(BlueprintAssignable)
	FTestDynamicMultiDelegate TestDynamicMultiDelegate;
protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

};
